package ViewPackage;

import java.awt.Color;
import java.awt.Graphics;

import delta.Field;
import delta.IFieldable;

public abstract class IFieldableView implements Comparable<IFieldableView>{
	
	
	//A gameView, amely hivogatja a draw metodust
	protected GameView view;
	
	//A kirajzolt objektum
	protected IFieldable observedObject;
	
	
	
	public IFieldableView(GameView view, IFieldable observedObject){
		this.view=view;
		this.observedObject=observedObject;
	}
	
	//Visszaad egy erteket, ami eldonti, hogy mikor rajzolodjon ki
	public abstract int getPriority();
	
	/*
	 * Az objektum ki tudja rajzolni magat
	 * ezt kell felul definialni a leszarmazottakban
	 * itt csak proba miatt van benne valami
	 */
	public abstract void draw(Graphics g);
//		//Az observedObject aktualis mezojenek lekerdezese
//		Field actualField=observedObject.getField();
//		
//		//Az aktualis mezohoz tartozo FieldView lekerdezese a gameViewtol
//		FieldView fieldView=view.getFieldView(actualField);
//		
//		//Ha null -al ter vissza le kell torolni()
//		if(fieldView==null){
//			//A torlendo objektumok listajahoz valo hozzavetel
//			view.removeGameObject(this);
//			return;
//		}
//		//=========================================================
//		//rajzolas a FieldView altal meghatarozott helyre es meretben
//		//===========================================================
//		
//		//Kor rajzolasa
//		int width=fieldView.getWidth();
//		int height=fieldView.getHeight();
//		int x=fieldView.getXPos();
//		int y=fieldView.getYPos();
//		
//		int size=width<=height? width-3 :height-3;
//		
//		g.setColor(Color.red);
//		g.fillOval(x+width/2-size/2,y+height/2-size/2, size, size);
		
		
//	}
	//Visszater azon mezonek a fedoobjektumaval ,amin all
	public FieldView getFieldView(){
		return view.getFieldView(observedObject.getField());
		
	}
	
	//osszehasonlito fuggveny a kirajzolashoz
	public int compareTo(IFieldableView other) {
		if (this.getPriority() > other.getPriority())
			return 1;
		else if (this.getPriority() < other.getPriority())
			return -1;
		else
			return 0;
 
	}
}
